@echo off
chcp 65001 >nul

set "targetExe=%~dp0php.exe"

:: 方法 1：使用 PowerShell（推荐，最可靠）
powershell -NoProfile -ExecutionPolicy Bypass -Command ^
    "Get-CimInstance Win32_Process | Where-Object { $_.ExecutablePath -eq '%targetExe%' } | ForEach-Object { Stop-Process -Id $_.ProcessId -Force; Write-Host ('结束进程 PID: ' + $_.ProcessId) }"

:: 方法 2：使用临时文件方法（纯批处理替代方案）
:: 仅在 PowerShell 不可用时使用此方法
if errorlevel 1 (
    set "tmpfile=%temp%\procs.tmp"
    wmic process where "name='php.exe'" get ExecutablePath,ProcessID > "%tmpfile%" 2>nul
    
    if exist "%tmpfile%" (
        for /f "tokens=2 delims= " %%i in ('findstr /c:"%targetExe%" "%tmpfile%"') do (
            taskkill /F /PID %%i >nul 2>&1
            echo 已结束进程 PID: %%i
        )
        del "%tmpfile%"
    ) else (
        echo 未能创建临时文件
    )
)
